/**
 * Copyright 2016 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*/

// DO NOT EDIT THIS GENERATED OUTPUT DIRECTLY!
// This file should be overwritten as part of your build process.
// If you need to extend the behavior of the generated service worker, the best approach is to write
// additional code and include it using the importScripts option:
//   https://github.com/GoogleChrome/sw-precache#importscripts-arraystring
//
// Alternatively, it's possible to make changes to the underlying template file and then use that as the
// new base for generating output, via the templateFilePath option:
//   https://github.com/GoogleChrome/sw-precache#templatefilepath-string
//
// If you go that route, make sure that whenever you update your sw-precache dependency, you reconcile any
// changes made to this original template file with your modified copy.

// This generated service worker JavaScript will precache your site's resources.
// The code needs to be saved in a .js file at the top-level of your site, and registered
// from your pages in order to be used. See
// https://github.com/googlechrome/sw-precache/blob/master/demo/app/js/service-worker-registration.js
// for an example of how you can register this script and handle various service worker events.

/* eslint-env worker, serviceworker */
/* eslint-disable indent, no-unused-vars, no-multiple-empty-lines, max-nested-callbacks, space-before-function-paren, quotes, comma-spacing */
'use strict';

var precacheConfig = [["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/index.html","acfa1a398b469ee81dcb946dd5e3b0c4"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/冒泡排序.jpg","33a947c71ad62b254cab62e5364d2813"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/基数排序.jpg","3a6f1e5059386523ed941f0d6c3a136e"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/堆排序.jpg","7073c729230e1a2c3c3c9207b25f6b43"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/希尔排序.jpg","ba0b5c6d31996bfdd20723be7a879b0d"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/归并排序.jpg","cdda3f11c6efbc01577f5c29a9066772"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/快速排序.jpg","c411339b79f92499dcb7b5f304c826f4"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/性能表.png","839422a30a824720938d3e4a35f2f5d1"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/插入排序.jpg","91b76e8e4dab9b0cad9a017d7dd431e2"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/桶排序.jpg","4eccad291e6635132fbe38a7cd0a15ef"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/算法分类.png","519970e854c90f9b901947963316dd64"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/计数排序.jpg","3c7ddb59df2d21b287e42a7b908409cb"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/排序算法送命题攻略/选择排序.jpg","1c7e20f306ddc02eb4e3a50fa7817ff4"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g762p5sb1lj31cy01y74c.jpg","37ee898211d80d4bf654f5370c93f4a5"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g762rpp2k0j31980u043c.jpg","216282f243cd7fe9a02c8508951a209c"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g762srl8jej31d408cwfk.jpg","1a005663ffd831a5b1c698885cbe98f0"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g762tk4ofdj31d40j80vo.jpg","dd1bee644dae3c77ce02b9095c7b0514"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g762u61tozj30lr0cmq3i.jpg","871f192c03a239be7075c337cb47645a"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g7638nwfbdj316t0u0781.jpg","efcccdeadde2871dcafa3b40ba3b604a"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g763vbwfa2j31040u0af6.jpg","bc56d341ec833c16f63621ce2546fe7e"],["E:/Lenny/lennylzy.github.io/public/2020/04/20/算法复杂度速查表/006y8mN6ly1g764qz74kgj328w0g67po.jpg","35830bd2104fdb325c61511fe9ea3fb9"],["E:/Lenny/lennylzy.github.io/public/2020/04/30/基础数据结构与算法概括一小篇/BFS&DFS.gif","f117c2514b69be3acbf475993242f77f"],["E:/Lenny/lennylzy.github.io/public/2020/05/11/Spring源码之【一】—SpringBoot的启动过程/SpringBoot启动流程.jpg","70c8d383f8eecd83f707c5c91ab08062"],["E:/Lenny/lennylzy.github.io/public/2020/05/12/Spring源码之【二】—刷新上下文refreshContext/Spring循环依赖.png","98884e4213a4179b2f48a8418d49689e"],["E:/Lenny/lennylzy.github.io/public/2020/05/25/Java虚拟机【一】—JVM的组成/JVM运行时数据区.jpg","bb017b8978b4d13205bbb05b579f569c"],["E:/Lenny/lennylzy.github.io/public/2020/05/25/Java虚拟机【一】—JVM的组成/JVM运行时数据区.png","9fe1425a54246c3c5f3cf162513c0e50"],["E:/Lenny/lennylzy.github.io/public/2020/05/25/Java虚拟机【一】—JVM的组成/JavaHeap.png","45afd4aa6fd3220708508aafff64063a"],["E:/Lenny/lennylzy.github.io/public/2020/05/25/Java虚拟机【一】—JVM的组成/运行时数据区.png","33a59b5ea845f73fe58ba3a6ea09e67b"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/JMM.png","cf0ccac3efce0658379adaed8450cff7"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/JVM.png","105add8082a41a59671a3d78107a4537"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/JavaStack.png","266211e81f5bccf25102410d2b435e53"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/MESI.jpg","3dbbc78f83199ccce891e33c42e17a9a"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/volatile.jpg","7c0d84fdef611c6b68160fab1498c3de"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/原子性问题.png","18ee5f24ef27806b4cdd4c609bd4ba90"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/可见性问题.png","f4623422d064ae8859b6f4904fca8b4a"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【三】—JVM内存模型/计算机内存模型.png","25f892efce8a1bb43792405f1a0677f3"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【五】—类加载机制/20181024222954778.png","66f1b6b91c0787e7b37f54765f99a341"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【五】—类加载机制/双亲委派模型.png","f8ce9d9b4f21b614f7fc7eff84050ba9"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【五】—类加载机制/类加载过程.png","3a467f97d8462cc8302006b1a5171aa9"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【四】—垃圾回收机制/CMS.png","cc333373e639c8df37da068cf788fb39"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【四】—垃圾回收机制/ParallelOld.png","c29941cc2babc0dade804d24da1712bd"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【四】—垃圾回收机制/ParallelScavengeParNew+SerialOld.png","3305aa07984818356754788698c276bd"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【四】—垃圾回收机制/Serial+SerialOld.png","25e551c7c6a89cd07d3ed468f0c8c84f"],["E:/Lenny/lennylzy.github.io/public/2020/05/26/Java虚拟机【四】—垃圾回收机制/垃圾收集器分类.png","5f3cfb67df5f37d976e31dc3b027186f"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/HashMap-put流程.png","ca65de4f3967f24e809ff0112b5c2c6d"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap-hash().png","c5febd9d73e148cd7c8a19f1b272e5de"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap死锁1.png","62e242eb836cfbcfc9128bdb3c42fb5f"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap死锁2.png","a1ba9084ed6538a48692edf4e0323cab"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap死锁3.png","1c47406f3f3da5b78ffad7da080463e6"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap死锁4.png","7d8fd6b4062542fa6b2ea05a3053ebde"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap死锁5.png","9cbea871ad0a4150c24361dabcead9b2"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/hashmap结构图.png","b92722f273c867aff1357da1add566a1"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/jdk1.7-rehash.png","b499942c9e21e616fcd76a739bc826ff"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【一】—HashMap/jdk1.8-rehash.png","7e9d4cbf8411104739b50a09f870b56f"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【二】—ConcurrentHashMap/ConcurrentHashMap扩容.png","4c9937501dfe29926943cac65e44cf7d"],["E:/Lenny/lennylzy.github.io/public/2020/06/03/Java—集合类【二】—ConcurrentHashMap/ConcurrentHashMap结构图.png","d1707d6eaf952c1ec8f5571c8aaf21c8"],["E:/Lenny/lennylzy.github.io/public/2020/06/10/Java—集合类【三】—集合框架/ConcurrentHashMap-1.7.png","5afcfe588ff0255f1ce4c87a140a5c86"],["E:/Lenny/lennylzy.github.io/public/2020/06/10/Java—集合类【三】—集合框架/ConcurrentHashMap-1.8.png","43ec7133b807a10caab168717ce1055f"],["E:/Lenny/lennylzy.github.io/public/2020/06/10/Java—集合类【三】—集合框架/HashMap-jdk1.8.png","fe1d6a141b49ec6395e89c607a48860f"],["E:/Lenny/lennylzy.github.io/public/2020/06/10/Java—集合类【三】—集合框架/HashMap-put.png","80ee4f179bbfe5172029565f93d34817"],["E:/Lenny/lennylzy.github.io/public/2020/06/10/Java—集合类【三】—集合框架/HashMap.png","09c83ad653cd7dfcd95f39f6de003e01"],["E:/Lenny/lennylzy.github.io/public/2020/06/10/Java—集合类【三】—集合框架/集合框架.jpg","16c46c405487cb72a553582f7bfc81ba"],["E:/Lenny/lennylzy.github.io/public/2020/07/19/ELK日志监控系统搭建-一-—docker部署ELK-Filebeat/ELK架构图.png","4e2e6421365f3fbd424039435e43a0a8"],["E:/Lenny/lennylzy.github.io/public/about/index.html","c03c1c334585c887e8fe13e731320a51"],["E:/Lenny/lennylzy.github.io/public/archives/2020/04/index.html","c321007d6a259b509e398ce62731a611"],["E:/Lenny/lennylzy.github.io/public/archives/2020/index.html","6413bd064a980a087bd1e44a886f7724"],["E:/Lenny/lennylzy.github.io/public/archives/index.html","400f3445cfd881441faff7d74720a222"],["E:/Lenny/lennylzy.github.io/public/categories/index.html","0eed8b503282756f563eb6eb84d582ec"],["E:/Lenny/lennylzy.github.io/public/categories/数据结构与算法/index.html","ae38f8e070cfad49aa3c7cc64a4c4a14"],["E:/Lenny/lennylzy.github.io/public/css/index.css","fbf876aea4c65bb04e72f318d2028ebf"],["E:/Lenny/lennylzy.github.io/public/css/var.css","d41d8cd98f00b204e9800998ecf8427e"],["E:/Lenny/lennylzy.github.io/public/images/Jhipster.jpg","e2e09bf9f557788f45dc907f4b2db9c9"],["E:/Lenny/lennylzy.github.io/public/images/avatar.jpg","b1da833d6399e5b9c1aac56ee455f5d3"],["E:/Lenny/lennylzy.github.io/public/images/main_top.jpg","16d4d357f068dbd03f3d469d6ef7e773"],["E:/Lenny/lennylzy.github.io/public/images/极限运动00.jpg","d32e6a1389bd8de8ce182d07d158f46c"],["E:/Lenny/lennylzy.github.io/public/images/极限运动01.jpg","b9a1cf8b70c99e088902b1a5999b95f7"],["E:/Lenny/lennylzy.github.io/public/images/极限运动02.jpg","33ef6c1fabf6b03b5ff4f836dbb48bb0"],["E:/Lenny/lennylzy.github.io/public/images/极限运动03.jpg","51c5d25075a42c796cc08abb9c58b417"],["E:/Lenny/lennylzy.github.io/public/images/极限运动05.jpg","d63484bae6637d924aa731cdb39c92c2"],["E:/Lenny/lennylzy.github.io/public/img/404.jpg","cae3eebf3121aedff311f6eea7e76a5e"],["E:/Lenny/lennylzy.github.io/public/img/algolia.svg","88450dd56ea1a00ba772424b30b7d34d"],["E:/Lenny/lennylzy.github.io/public/img/alipay.jpg","9d7d25339256096f77b7a3634bcd6e33"],["E:/Lenny/lennylzy.github.io/public/img/avatar.png","9eee8b7f139e0b0ddad209d66d3577a3"],["E:/Lenny/lennylzy.github.io/public/img/comment_bg.png","34a79bf208a1c3bee9d6e491a00cd369"],["E:/Lenny/lennylzy.github.io/public/img/friend_404.gif","68af0be9d22722e74665ef44dd532ba8"],["E:/Lenny/lennylzy.github.io/public/img/icp.png","6e26aed5ced63bc60524cc736611d39e"],["E:/Lenny/lennylzy.github.io/public/img/loading.gif","d1cf8d9ccb6a2b3514a7d14332035a3c"],["E:/Lenny/lennylzy.github.io/public/img/post_loadding.svg","2901bcb74c0f032ed139676618432304"],["E:/Lenny/lennylzy.github.io/public/img/wechat.jpg","67599109276ad864d53e34817dbc0d72"],["E:/Lenny/lennylzy.github.io/public/index.html","9b657c02801a45547399be080bf341bf"],["E:/Lenny/lennylzy.github.io/public/js/main.js","06c6a43fd1e82861109b1eee73f8ead7"],["E:/Lenny/lennylzy.github.io/public/js/tw_cn.js","66b7ceb1aa8c2e14b8913f2372bd8b1c"],["E:/Lenny/lennylzy.github.io/public/js/utils.js","0673a8ee6ec8fe5ac3e009795707377f"],["E:/Lenny/lennylzy.github.io/public/tags/index.html","20b5b911758de2f758e2f8db4cc496a8"],["E:/Lenny/lennylzy.github.io/public/tags/算法/index.html","1aebe6f752ab8ad97d218dec9d7e7425"]];
var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : '');


var ignoreUrlParametersMatching = [/^utm_/];



var addDirectoryIndex = function(originalUrl, index) {
    var url = new URL(originalUrl);
    if (url.pathname.slice(-1) === '/') {
      url.pathname += index;
    }
    return url.toString();
  };

var cleanResponse = function(originalResponse) {
    // If this is not a redirected response, then we don't have to do anything.
    if (!originalResponse.redirected) {
      return Promise.resolve(originalResponse);
    }

    // Firefox 50 and below doesn't support the Response.body stream, so we may
    // need to read the entire body to memory as a Blob.
    var bodyPromise = 'body' in originalResponse ?
      Promise.resolve(originalResponse.body) :
      originalResponse.blob();

    return bodyPromise.then(function(body) {
      // new Response() is happy when passed either a stream or a Blob.
      return new Response(body, {
        headers: originalResponse.headers,
        status: originalResponse.status,
        statusText: originalResponse.statusText
      });
    });
  };

var createCacheKey = function(originalUrl, paramName, paramValue,
                           dontCacheBustUrlsMatching) {
    // Create a new URL object to avoid modifying originalUrl.
    var url = new URL(originalUrl);

    // If dontCacheBustUrlsMatching is not set, or if we don't have a match,
    // then add in the extra cache-busting URL parameter.
    if (!dontCacheBustUrlsMatching ||
        !(url.pathname.match(dontCacheBustUrlsMatching))) {
      url.search += (url.search ? '&' : '') +
        encodeURIComponent(paramName) + '=' + encodeURIComponent(paramValue);
    }

    return url.toString();
  };

var isPathWhitelisted = function(whitelist, absoluteUrlString) {
    // If the whitelist is empty, then consider all URLs to be whitelisted.
    if (whitelist.length === 0) {
      return true;
    }

    // Otherwise compare each path regex to the path of the URL passed in.
    var path = (new URL(absoluteUrlString)).pathname;
    return whitelist.some(function(whitelistedPathRegex) {
      return path.match(whitelistedPathRegex);
    });
  };

var stripIgnoredUrlParameters = function(originalUrl,
    ignoreUrlParametersMatching) {
    var url = new URL(originalUrl);
    // Remove the hash; see https://github.com/GoogleChrome/sw-precache/issues/290
    url.hash = '';

    url.search = url.search.slice(1) // Exclude initial '?'
      .split('&') // Split into an array of 'key=value' strings
      .map(function(kv) {
        return kv.split('='); // Split each 'key=value' string into a [key, value] array
      })
      .filter(function(kv) {
        return ignoreUrlParametersMatching.every(function(ignoredRegex) {
          return !ignoredRegex.test(kv[0]); // Return true iff the key doesn't match any of the regexes.
        });
      })
      .map(function(kv) {
        return kv.join('='); // Join each [key, value] array into a 'key=value' string
      })
      .join('&'); // Join the array of 'key=value' strings into a string with '&' in between each

    return url.toString();
  };


var hashParamName = '_sw-precache';
var urlsToCacheKeys = new Map(
  precacheConfig.map(function(item) {
    var relativeUrl = item[0];
    var hash = item[1];
    var absoluteUrl = new URL(relativeUrl, self.location);
    var cacheKey = createCacheKey(absoluteUrl, hashParamName, hash, false);
    return [absoluteUrl.toString(), cacheKey];
  })
);

function setOfCachedUrls(cache) {
  return cache.keys().then(function(requests) {
    return requests.map(function(request) {
      return request.url;
    });
  }).then(function(urls) {
    return new Set(urls);
  });
}

self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open(cacheName).then(function(cache) {
      return setOfCachedUrls(cache).then(function(cachedUrls) {
        return Promise.all(
          Array.from(urlsToCacheKeys.values()).map(function(cacheKey) {
            // If we don't have a key matching url in the cache already, add it.
            if (!cachedUrls.has(cacheKey)) {
              var request = new Request(cacheKey, {credentials: 'same-origin'});
              return fetch(request).then(function(response) {
                // Bail out of installation unless we get back a 200 OK for
                // every request.
                if (!response.ok) {
                  throw new Error('Request for ' + cacheKey + ' returned a ' +
                    'response with status ' + response.status);
                }

                return cleanResponse(response).then(function(responseToCache) {
                  return cache.put(cacheKey, responseToCache);
                });
              });
            }
          })
        );
      });
    }).then(function() {
      
      // Force the SW to transition from installing -> active state
      return self.skipWaiting();
      
    })
  );
});

self.addEventListener('activate', function(event) {
  var setOfExpectedUrls = new Set(urlsToCacheKeys.values());

  event.waitUntil(
    caches.open(cacheName).then(function(cache) {
      return cache.keys().then(function(existingRequests) {
        return Promise.all(
          existingRequests.map(function(existingRequest) {
            if (!setOfExpectedUrls.has(existingRequest.url)) {
              return cache.delete(existingRequest);
            }
          })
        );
      });
    }).then(function() {
      
      return self.clients.claim();
      
    })
  );
});


self.addEventListener('fetch', function(event) {
  if (event.request.method === 'GET') {
    // Should we call event.respondWith() inside this fetch event handler?
    // This needs to be determined synchronously, which will give other fetch
    // handlers a chance to handle the request if need be.
    var shouldRespond;

    // First, remove all the ignored parameters and hash fragment, and see if we
    // have that URL in our cache. If so, great! shouldRespond will be true.
    var url = stripIgnoredUrlParameters(event.request.url, ignoreUrlParametersMatching);
    shouldRespond = urlsToCacheKeys.has(url);

    // If shouldRespond is false, check again, this time with 'index.html'
    // (or whatever the directoryIndex option is set to) at the end.
    var directoryIndex = 'index.html';
    if (!shouldRespond && directoryIndex) {
      url = addDirectoryIndex(url, directoryIndex);
      shouldRespond = urlsToCacheKeys.has(url);
    }

    // If shouldRespond is still false, check to see if this is a navigation
    // request, and if so, whether the URL matches navigateFallbackWhitelist.
    var navigateFallback = '';
    if (!shouldRespond &&
        navigateFallback &&
        (event.request.mode === 'navigate') &&
        isPathWhitelisted([], event.request.url)) {
      url = new URL(navigateFallback, self.location).toString();
      shouldRespond = urlsToCacheKeys.has(url);
    }

    // If shouldRespond was set to true at any point, then call
    // event.respondWith(), using the appropriate cache key.
    if (shouldRespond) {
      event.respondWith(
        caches.open(cacheName).then(function(cache) {
          return cache.match(urlsToCacheKeys.get(url)).then(function(response) {
            if (response) {
              return response;
            }
            throw Error('The cached response that was expected is missing.');
          });
        }).catch(function(e) {
          // Fall back to just fetch()ing the request if some unexpected error
          // prevented the cached response from being valid.
          console.warn('Couldn\'t serve response for "%s" from cache: %O', event.request.url, e);
          return fetch(event.request);
        })
      );
    }
  }
});







